Quasi-high availability hosted applications

ABSTRACT

A client-server application is provided to clients across a network. Requests from the client are accepted by a reliable proxy and sent to master and standby configurations of the client-server application. Each configuration processes the request to produce master and standby responses respectively. The proxy selects one response based on various criteria including a length being greater than the other response by more than a fixed value. The selected response is returned to the client over the internet. The configuration producing the selected response is thereafter designated as the master configuration. A recovery process may be initiated on the unselected configuration.

TECHNICAL FIELD

[0001] The invention relates generally to client-server computingincluding web applications with a browser based client. Moreparticularly the invention relates to a method and system for providingclient server applications using a request-response protocol to a clientwith a quasi-high availability.

BACKGROUND OF THE INVENTION

[0002] Client-server applications, including hosted softwareapplications, provided as a services offering need to have a reasonablyhigh availability in order to supply an acceptable service level andprevent customer dissatisfaction due to outages. While a number oftechniques have been developed to provide high availability, the cost isusually prohibitive from the standpoint of what a customer is willing topay for the service offering.

[0003] For example, BEA Systems, Inc. describes in a document titled“Using WebLogic Server Clusters,” a group of servers that work togetherto provide a powerful, reliable application platform. A clusteredservice is one that is available on multiple servers in the cluster. Thecluster appears to a client as a single server, but is in fact a groupof servers acting as one. If one server fails, another can take over.The ability to fail-over from a failed server to a functioning serverincreases the availability of the application to a client.

[0004] The clustered service is represented by a stub i.e. a localprocedure in a remote procedure call (RPC). The stub is aware of allinstances of service. The stub appears to the client as a normal remotemethod invocation (RMI) stub. On each call, the stub employs a loadalgorithm to choose which instance to call, providing load balancingacross the cluster. If a failure occurs during the call, the stubintercepts execution and retries the call on another instance, providingfail-over to the client.

[0005] Lidcam Technology of Melbourne Australia describes in a 2001document titled “ServerIron Internet Web Switches,” detection andsub-second fail-over to the next server in a group that provides likeservice. Their ServerIron switch detects application error conditionssuch as the hypertext transfer protocol (HTTP) “404 Object not found”before the client sees the message and transparently redirects therequest to another server without any manual intervention. To providevery high availability, the ServerIron switch includes redundancycapability that protects against session loss.

[0006] Goldszmidt et al. In U.S. Pat. No. 6,195,680 B1 describe aclient-server system for fault tolerant delivering a data stream such aslive audio or video clips. The client receives the real-time data streamfrom a primary server in a first set of servers. Upon detecting afailure in either the real-time data stream or the primary server, theclient dynamically switches to receiving the real-time data stream froma secondary server in a set of servers disjoint from the first set ofservers.

[0007] Guenthner et al. In U.S. Pat. No. 6,134,588 describe changing aweb browser so that the browser will address its requests to any (orpolicy-specified) of the available servers in a plurality of servers. Ifa browser time-out failure occurs, indicating unavailability of aserver, the browser selects another server. The browser remembers for agiven time period which server IP addresses have failed so that thoseaddresses are not repeatedly tried.

[0008] U.S. Pat. Nos. 6,195,680 and 5,134,588 as well as the Lidcam“ServerIron” paper described above shall be incorporated herein byreference.

[0009] Despite the aforementioned and other developments, no overallsatisfactory solution has been found which provides quasi-highavailability of client-server applications including hosted servicesapplications, with low cost.

[0010] In accordance with the teaching of the present invention there isprovided such a solution. It is believed that this overall solutionconstitutes a significant advancement in the hosted services applicationoffering art.

OBJECTS AND SUMMARY OF THE INVENTION

[0011] It is therefore a principal object of the present invention toenhance the availability of client-server applications.

[0012] It is another object to provide a system for providing quasi-highavailability client-server or hosted services applications.

[0013] It is yet another object of the invention to provide a computerprogram product for instructing a processor to provide a reliableclient-server application.

[0014] These and other objects are attained in accordance with oneembodiment of the invention wherein there is provided a method ofproviding a reliable hosted application, comprising the steps of,providing a master configuration and a standby configuration of thehosted application, providing a proxy adapted to accept a request from aclient and send the request to the master and standby configurations,processing the request by the master and standby configurations toproduce master and standby responses, each of the responses having arespective length, selecting one of the responses, and returning theselected response to the client, and thereafter designating theconfiguration which produced the selected response as the masterconfiguration.

[0015] In accordance with another embodiment of the invention there isprovided a system for providing a reliable hosted application,comprising, one or more servers having a master configuration and astandby configuration of hosted application, a proxy on one of theservers, adapted to accept a request from a client and send the requestto the master and standby configurations, master and standby responsesproduced by processing the request by the master and standbyconfigurations respectively, the each of the responses having arespective length, means for selecting one of the responses, andreturning the selected response to the client, and means for designatingthe configuration which produced the selected response as the masterconfiguration.

[0016] In yet another embodiment of the invention there is provided acomputer program product for instructing a processor to provide areliable hosted application, the computer program product comprising, acomputer readable medium, first program instruction means for providinga master configuration and a standby configuration of the hostedapplication, second program instruction means for providing a proxyadapted to accept a request from a client and send the request to themaster and standby configurations, third program instruction means forprocessing the request by the master and standby configurations toproduce master and standby responses, each of the responses having arespective length, fourth program instruction means for selecting one ofthe responses, and returning the selected response to the client, andfifth program instruction means for thereafter designating theconfiguration which produced the selected response as the masterconfiguration; and wherein all the program instruction means arerecorded on the medium.

BRIEF DESCRIPTION OF DRAWINGS

[0017]FIG. 1 illustrates a system for providing quasi-high availabilityof a hosted application; and

[0018]FIG. 2 is a flowchart depicting a method of providing quasi-highavailability in accordance with the present invention.

BEST MODE FOR CARRYING OUT THE INVENTION

[0019] For a better understanding of the present invention, togetherwith other and further objects, advantages and capabilities thereof,reference is made to the following disclosure and appended claims inconnection with the above-described drawings.

[0020] In FIG. 1 there is shown a system 10 for providing a quasi-highavailability hosted application in accordance with the presentinvention. Master 20 and standby 22 configurations may have applicationservers 24, 28 and database servers 26, 30 respectively, softwarerunning concurrently. The master and standby configurations may belocated on different physical hardware computing devices, however, otherpossibilities known in the art for operating multiple configurations ona single computing device may also be used.

[0021] Proxy 16 may be located on a third server side computing device.Proxy 16 receives requests 32 from client 12 over the internet 14 usinga specific protocol such as HTTP or HTTP/S.

[0022] It is known that the HTTP/S protocol specifies that informationpassing from client to server and vice-versa also called traffic isencrypted.

[0023] If proxy 16 receives a request from a client browser using theHTTP/S protocol, proxy 16 may decrypt the incoming traffic and forwardthe request to application servers 24, 28 using the unencrypted HTTPprotocol. Other protocols such as request-response protocols may also beused.

[0024] Proxy 16 sends request 32 to both master 20 and standby 22configurations. Proxy 16 maintains session object, also referred to assession table 18, using known session management or session trackingtechniques including session ID, session timeout, dynamic URL's, and useof cookies. Proxy 16 may substitute the session ID related elements inthe requests sent to standby configuration 22 based on previousresponses therefrom.

[0025] In an embodiment having master 20 and standby 22 configurationsrunning on a single hardware computing device, proxy 16 may also berunning on this same computing device without departing from the scopeof the invention. Other combinations of software and hardware computingdevices may also be used.

[0026] Both master 20 and standby 22 configurations process each request32 independently of the other. Request 32 may involve use of applicationservers 24, 28 and further may involve inquiries to database servers 26,30 respectively. Master 36 and standby 38 responses are produced asrequest 32 is processed by master 20 and standby 22 configurationsrespectively. Responses 36, 38 are received by proxy 16 and compared toselect one for subsequent return to client 12 over internet 14 which maybe any type of network including the well-known interconnection ofnetworks referred to as “the internet”. The responses may also use HTTPprotocol.

[0027] Proxy 16 may compare the length of responses 36 and 38 and selectthe response to be forwarded to client 12. For example, proxy 16 mayselect the response having a length greater than a fixed value more thanthe length of the other response. In one embodiment, proxy 16 may scanresponses 36, 38 for pre-defined error messages, such as HTTP errormessages or application specific error messages, and select the otherresponse not having an error message other methods of selection may alsobe used.

[0028] Upon receipt of a pre-defined error message, proxy 16 maygenerate an alarm or initiate a recovery process for the configurationwhich produced the error message in its respective response. Therecovery process may include a reset of the unselected configuration andsubsequent copying of state related data from the master configuration.

[0029] Proxy 16 may also operate by analyzing responses 36,38 for apre-defined error condition pattern. For example, an error conditionpattern may be defined using pattern description rules such as Unixstyle regular expressions. Proxy 16 attempts to match every responsewith a pre-defined error condition pattern and selects one of theresponses based on a match with the other response.

[0030] In the case that the response 38 from standby configuration 22 isselected, the standby configuration is thereafter designated as themaster configuration and vice-versa.

[0031] System 10 as therefore described above is capable of providing anoverall availability much greater than either of configurations 20,22alone, provided the availability of proxy 16 is that of a reliableproxy. A reliable proxy has an availability high enough so as not to bea substantial limitation to the overall availability of system 10.

[0032] In FIG. 2 there is shown a flowchart 40 of a method of providinga reliable client-server or hosted application in accordance with thepresent invention. In step 42 master 20 and standby 22 configurations ofhosted applications 24, 28 respectively are provided.

[0033] In step 44, proxy 16 is provided to accept request 32 overinternet 14 and send the request to master 20 and standby 22configurations.

[0034] The requests are processed in step 46 independently to producemaster 36 and standby 38 responses respectively, each having arespective length. For example, request 32 may be an HTTP protocolrequest. Responses 36,38 may each be an HTML file sent via HTTP protocolto proxy 16.

[0035] Proxy 16 selects one response in step 48 using any criteriaincluding the length and error code criteria described above. Theselected response is sent to client 12 across internet 14 using anyprotocol including the HTTP protocol.

[0036] In step 50 the configuration producing the selected response isthereafter designated as the master configuration.

[0037] While there have been shown and described what are at presentconsidered the preferred embodiments of the invention, it will beobvious to those skilled in the art that various modifications made bemade therein without departing from the scope of the invention asdefined by the appended claims.

What is claimed is:
 1. A method of providing a reliable client-serverapplication, comprising the steps of: providing a master configurationand a standby configuration of said client-server application; providinga proxy adapted to accept a request from a client and send said requestto said master and standby configurations; processing said request bysaid master and standby configurations to produce master and standbyresponses, each of said responses having a respective length; selectingone of said responses, and returning the selected response to saidclient; and thereafter designating the configuration which produced theselected response as the master configuration.
 2. The method of claim 1,wherein said master configuration and said standby configuration areeach provided on different servers.
 3. The method of claim 1, whereinsaid request from said client is accepted from a client browser usingHTTP/HTTPS protocol.
 4. The method of claim 1, wherein said proxy is areliable proxy.
 5. The method of claim 1, wherein the step of selectingone of said responses comprises selecting the response having the lengthgreater than a fixed value more than the other length.
 6. The method ofclaim 1, wherein the step of selecting one of said responses comprisesreceiving a predefined error message from one of said responses andselecting the other response.
 7. The method of claim 1, wherein the stepof selecting one of said responses comprises matching one of saidresponse to a predefined error condition pattern and selecting the otherresponse.
 8. The method of claim 6, further comprising generating analarm.
 9. The method of claim 6, further comprising initiating arecovery process.
 10. The method of claim 9, wherein said recoveryprocess further comprises the steps of resetting said standbyconfiguration and copying state-related data from said masterconfiguration.
 11. The method of claim 1, wherein the step of selectingone of said responses comprises selecting the master response whenneither of said respective length is greater than a fixed value morethan the other length and not receiving a predefined error message inresponse to said request.
 12. The method of claim 1, wherein saidselected response is returned to said client as an HTML document.
 13. Asystem for providing a reliable hosted application, comprising: one ormore servers having a master configuration and a standby configurationof said hosted application; a proxy on one of said servers, adapted toaccept a request from a client and send said request to said master andstandby configurations; master and standby responses produced byprocessing said request by said master and standby configurationsrespectively, said each of said responses having a respective length;means for selecting one of said responses, and returning the selectedresponse to said client; and means for designating the configurationwhich produced the selected response as the master configuration. 14.The system of claim 13, wherein said master configuration and saidstandby configuration are each located on different servers.
 15. Thesystem of claim 13, wherein said proxy is further adapted to accept arequest from a client browser using HTTP/HTTPS protocol.
 16. The systemof claim 13, wherein said proxy is further adapted to accept saidrequest from a client browser using HTTP/S protocol, decrypt saidrequest, and send said request to said master and standby configurationsusing HTTP protocol.
 17. The system of claim 13, wherein said proxy is areliable proxy.
 18. The system of claim 13, wherein said means forselecting one of said responses comprises means for selecting theresponse having the length greater than a fixed value more than theother length.
 19. The system of claim 13, wherein said means forselecting one of said responses comprises means for receiving apredefined error message from one of said responses and selecting theother response.
 20. The system of claim 13, wherein said means forselecting one of said responses comprises means for matching one of saidresponses to a pre-defined error condition pattern and selecting theother response.
 21. The system of claim 19, further comprising means forgenerating an alarm.
 22. The system of claim 19, further comprisingmeans for initiating a recovery process.
 23. The system of claim 22,wherein said means for initiating said recovery process furthercomprises means for resetting said standby configuration and copyingstate-related data from said master configuration.
 24. The system ofclaim 13, wherein said means for selecting one of said responsescomprises means for selecting the master response when neither of saidrespective length is greater than a fixed value more than the otherlength and not receiving a predefined error message in response to saidrequest.
 25. A computer program product for instructing a processor toprovide a reliable client-server application, said computer programproduct comprising: a computer readable medium; first programinstruction means for providing a master configuration and a standbyconfiguration of said hosted application; second program instructionmeans for providing a proxy adapted to accept a request from a clientand send said request to said master and standby configurations; thirdprogram instruction means for processing said request by said master andstandby configurations to produce master and standby responses, each ofsaid responses having a respective length; fourth program instructionmeans for selecting one of said responses, and returning the selectedresponse to said client; and fifth program instruction means forthereafter designating the configuration which produced the selectedresponse as the master configuration; and wherein all said programinstruction means are recorded on said medium.